#ifndef HEADERS_IDENTITY
#define HEADERS_IDENTITY

#include <assert.h>
#include <stdlib.h>

#include "cluster.h"

// These are flag times. -1 only appears if the ident_list is the
// head of the list (the one inside of the cluster). 0 only appears
// if the value is in a new scope. The values associated with these
// times will, for now, be NULL.
#define INITIAL_T -1
#define SCOPE_T 0

struct ident_list {
    cl_time_t time;
    cluster* value;
    struct ident_list* new_scope;
    struct ident_list* new_scope_back;
    struct ident_list* next;
    struct ident_list* next_back;
};

typedef struct ident_list ident_list;

#endif
